package TestExercises03;

import java.rmi.StubNotFoundException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.function.Function;
import java.util.function.IntFunction;

//方法引用练习
/*
    需求:
        创建集合添加学生对象
        学生对象属性: name，age
    要求:
        获取姓名并放到数组当中
        使用方法引用完成

    技巧:
        1.现在有没有一个方法符合我当前的需求
        2.如果有这样的方法，这个方法是否满足引用的规则
            静态        类名::方法名
            成员方法
            构造方法    类名:: new
 */
public class Test02 {
    public static void main(String[] args) {

        //1、创建集合并添加数据
        ArrayList<Student> list = new ArrayList<>();
        list.add(new Student("zhangsan", 23));
        list.add(new Student("lisi", 24));
        list.add(new Student("wangwu", 25));

        //2、获取姓名并放到数组当中
        String[] arr1 = list.stream().map(new Function<Student, String>() {
            @Override
            public String apply(Student student) {
                return student.getName();
            }
        }).toArray(new IntFunction<String[]>() {
            @Override
            public String[] apply(int value) {
                return new String[value];
            }
        });

        String[] arr2 = list.stream().map(Student::getName).toArray(String[]::new);

        //3、打印
        System.out.println(Arrays.toString(arr1));
        System.out.println("-------------------");
        System.out.println(Arrays.toString(arr2));
    }
}
